package com.chuxing.system.service;

import com.chuxing.domain.DTO.ExamListDTO;
import com.chuxing.domain.Exam;
import com.chuxing.domain.VO.PageResultVO;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

/**
 * 笔试信息Service接口
 * 
 * @author 刘祺
 * @date 2024-12-08
 */
public interface IExamService 
{
    /**
     * 查询笔试信息
     * 
     * @param examId 笔试信息主键
     * @return 笔试信息
     */
    public Exam selectExamByExamId(Long examId);

    /**
     * 查询笔试信息列表
     * 
     * @param examListDTO 笔试信息
     * @return 笔试信息集合
     */
    public PageResultVO selectExamList(ExamListDTO examListDTO);

    /**
     * 新增笔试信息
     * 
     * @param exam 笔试信息
     * @return 结果
     */
    public int insertExam(Exam exam);

    /**
     * 修改笔试信息
     * 
     * @param exam 笔试信息
     * @return 结果
     */
    public int updateExam(Exam exam);

    /**
     * 批量删除笔试信息
     * 
     * @param examIds 需要删除的笔试信息主键集合
     * @return 结果
     */
    public int deleteExamByExamIds(Long[] examIds);

    /**
     * 获取笔试信息
     * @param studentId
     * @return
     */
    Exam getExamInfo(String studentId);

    /**
     * 保存笔试信息
     * @param exam
     */
    void saveExamInfo(Exam exam);

    /**
     * 清空笔试信息
     * @param studentId
     */
    void clear(String studentId);

    /**
     * 上传笔试信息
     * @param file
     */
    void upload(MultipartFile file);

    /**
     * 导出笔试信息
     * @param examListDTO
     * @param response
     */
    void export(HttpServletResponse response, ExamListDTO examListDTO);

    void deleteAll();

    void checkExamScoreLine(Integer score);
}
